<script>
	export default {
		globalData: {
			todoItems: [], // 存储待办事项数据
			eventDebounce: {} // 用于全局事件防抖
		},
		onLaunch: function() {
			console.log('App Launch');
			
			// 添加全局事件防抖函数
			this.setupGlobalEventDebounce();
		},
		onShow: function() {
			console.log('App Show');
		},
		onHide: function() {
			console.log('App Hide');
		},
		methods: {
			// 设置全局事件防抖
			setupGlobalEventDebounce() {
				const globalEvent = uni.$emit;
				
				// 重写全局事件触发函数，添加防抖
				uni.$emit = (eventName, ...args) => {
					const gd = getApp().globalData;
					
					// 对特定的事件进行防抖处理
					const debounceEvents = ['todoStatusChanged', 'todoItemAdded', 'todoItemDeleted'];
					
					if (debounceEvents.includes(eventName)) {
						if (gd.eventDebounce[eventName]) {
							clearTimeout(gd.eventDebounce[eventName]);
						}
						
						gd.eventDebounce[eventName] = setTimeout(() => {
							globalEvent.call(uni, eventName, ...args);
							gd.eventDebounce[eventName] = null;
						}, 50);
					} else {
						// 其他事件正常触发
						globalEvent.call(uni, eventName, ...args);
					}
				};
			}
		}
	}
</script>

<style lang="scss">
	/* 注意要写在第一行，同时给style标签加入lang="scss"属性 */
	@import "@/uni_modules/uview-ui/index.scss";
</style> 